public class MergeTrees {

    public TreeNode mergeTrees1(TreeNode root1, TreeNode root2) {
        if (root1 == null && root2 == null) return null;
        TreeNode node;
        if (root1 == null && root2 != null) {
            node = new TreeNode(root2.val);
            node.left = root2.left;
            node.right = root2.right;
        } else if (root2 == null && root1 != null) {
            node = new TreeNode(root1.val);
            node.left = root1.left;
            node.right = root1.right;
        } else {
            node = new TreeNode(root1.val + root2.val);
            node.left = mergeTrees1(root1.left, root2.left);
            node.right = mergeTrees1(root1.right, root2.right);
        }
        return node;
    }

    public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {
        if (root1 == null) return root2;
        if (root2 == null) return root1;
        TreeNode node = new TreeNode(root1.val + root2.val);
        node.left = mergeTrees(root1.left, root2.left);
        node.right = mergeTrees(root1.right, root2.right);
        return node;
    }
}
